<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>柯里化</title>
  </head>
  <body>
    <script>
      /*
        柯里化:
            -当有一个函数有多个参数的时候可以选择先传递一部分参数调用（不变的）
            -然后返回一个新的函数接受剩余的参数，返回结果
            -lodash中的柯里化 参考nodes中08.js
            -柯里化可以让我们给一个函数传递较少的参数得到一个已经记住了某些固定参数的函数
            -这是一种对函数参数的缓存
            -让函数变得更灵活，让函数的粒度更小
            -可以把一个多元函数转换成一元函数，可以组合函数产生强大的功能
      */
      //   let min = 18;
      //   function checkAge(age) {
      //     return age >= min;
      //   }
      // 改写 硬编码
      //   function checkAge(age) {
      //     let min = 18;
      //     return age >= min;
      //   }
      // 改写 柯里化
      //   function checkAge(min) {
      //     return function (age) {
      //       return age >= min;
      //     };
      //   }
      //箭头函数改写
      let checkAge = (min) => (age) => age >= min;
      let checkAge18 = checkAge(18);
      console.log(checkAge18(20));
    </script>
  </body>
</html>
